/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.org.auditoria.renta.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author HP
 */
@Entity
@Table(name = "CONTRIBUYENTE", catalog = "", schema = "")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Contribuyente.findAll", query = "SELECT c FROM Contribuyente c"),
    @NamedQuery(name = "Contribuyente.findByIdcontribuyente", query = "SELECT c FROM Contribuyente c WHERE c.idcontribuyente = :idcontribuyente"),
    @NamedQuery(name = "Contribuyente.findByNombrecontribuyente1", query = "SELECT c FROM Contribuyente c WHERE c.nombrecontribuyente1 = :nombrecontribuyente1"),
    @NamedQuery(name = "Contribuyente.findByNombrecontribuyente2", query = "SELECT c FROM Contribuyente c WHERE c.nombrecontribuyente2 = :nombrecontribuyente2"),
    @NamedQuery(name = "Contribuyente.findByNombrecontribuyente3", query = "SELECT c FROM Contribuyente c WHERE c.nombrecontribuyente3 = :nombrecontribuyente3"),
    @NamedQuery(name = "Contribuyente.findByApellidocontribuyente1", query = "SELECT c FROM Contribuyente c WHERE c.apellidocontribuyente1 = :apellidocontribuyente1"),
    @NamedQuery(name = "Contribuyente.findByApellidocontribuyente2", query = "SELECT c FROM Contribuyente c WHERE c.apellidocontribuyente2 = :apellidocontribuyente2"),
    @NamedQuery(name = "Contribuyente.findByNitcontribuyente", query = "SELECT c FROM Contribuyente c WHERE c.nitcontribuyente = :nitcontribuyente")})
public class Contribuyente implements Serializable {
    private static final long serialVersionUID = 1L;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "IDCONTRIBUYENTE")
    private BigDecimal idcontribuyente;
    @Size(max = 20)
    @Column(name = "NOMBRECONTRIBUYENTE1")
    private String nombrecontribuyente1;
    @Size(max = 20)
    @Column(name = "NOMBRECONTRIBUYENTE2")
    private String nombrecontribuyente2;
    @Size(max = 20)
    @Column(name = "NOMBRECONTRIBUYENTE3")
    private String nombrecontribuyente3;
    @Size(max = 20)
    @Column(name = "APELLIDOCONTRIBUYENTE1")
    private String apellidocontribuyente1;
    @Size(max = 20)
    @Column(name = "APELLIDOCONTRIBUYENTE2")
    private String apellidocontribuyente2;
    @Column(name = "NITCONTRIBUYENTE")
    private BigInteger nitcontribuyente;
    @JoinColumn(name = "IDTIPOCONTRIBUYENTE", referencedColumnName = "IDTIPOCONTRIBUYENTE")
    @ManyToOne(optional = false)
    private Tipocontribuyente idtipocontribuyente;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "contribuyenteIdcontribuyente")
    private List<Declaraciones> declaracionesList;

    public Contribuyente() {
    }

    public Contribuyente(BigDecimal idcontribuyente) {
        this.idcontribuyente = idcontribuyente;
    }

    public BigDecimal getIdcontribuyente() {
        return idcontribuyente;
    }

    public void setIdcontribuyente(BigDecimal idcontribuyente) {
        this.idcontribuyente = idcontribuyente;
    }

    public String getNombrecontribuyente1() {
        return nombrecontribuyente1;
    }

    public void setNombrecontribuyente1(String nombrecontribuyente1) {
        this.nombrecontribuyente1 = nombrecontribuyente1;
    }

    public String getNombrecontribuyente2() {
        return nombrecontribuyente2;
    }

    public void setNombrecontribuyente2(String nombrecontribuyente2) {
        this.nombrecontribuyente2 = nombrecontribuyente2;
    }

    public String getNombrecontribuyente3() {
        return nombrecontribuyente3;
    }

    public void setNombrecontribuyente3(String nombrecontribuyente3) {
        this.nombrecontribuyente3 = nombrecontribuyente3;
    }

    public String getApellidocontribuyente1() {
        return apellidocontribuyente1;
    }

    public void setApellidocontribuyente1(String apellidocontribuyente1) {
        this.apellidocontribuyente1 = apellidocontribuyente1;
    }

    public String getApellidocontribuyente2() {
        return apellidocontribuyente2;
    }

    public void setApellidocontribuyente2(String apellidocontribuyente2) {
        this.apellidocontribuyente2 = apellidocontribuyente2;
    }

    public BigInteger getNitcontribuyente() {
        return nitcontribuyente;
    }

    public void setNitcontribuyente(BigInteger nitcontribuyente) {
        this.nitcontribuyente = nitcontribuyente;
    }

    public Tipocontribuyente getIdtipocontribuyente() {
        return idtipocontribuyente;
    }

    public void setIdtipocontribuyente(Tipocontribuyente idtipocontribuyente) {
        this.idtipocontribuyente = idtipocontribuyente;
    }

    @XmlTransient
    public List<Declaraciones> getDeclaracionesList() {
        return declaracionesList;
    }

    public void setDeclaracionesList(List<Declaraciones> declaracionesList) {
        this.declaracionesList = declaracionesList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idcontribuyente != null ? idcontribuyente.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Contribuyente)) {
            return false;
        }
        Contribuyente other = (Contribuyente) object;
        if ((this.idcontribuyente == null && other.idcontribuyente != null) || (this.idcontribuyente != null && !this.idcontribuyente.equals(other.idcontribuyente))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "sv.org.auditoria.renta.entity.Contribuyente[ idcontribuyente=" + idcontribuyente + " ]";
    }
    
}
